El case expresión es la piedra angular del flujo de control de Elixir. A diferencia de los enunciados switch imperativos, case es una expresión funcional que devuelve el resultado de la rama coincidente, permitiendo a los desarrolladores descomponer tipos de datos complejos como mapas y tuplas instantáneamente, al tiempo que se impone un lógica exhaustiva.
1. Coincidencia de patrones y vinculación
El case expresión te permite probar un valor contra un conjunto de patrones. Ejecuta el código asociado con el primer patrón que coincide y devuelve el valor de ese código. Puedes vincular variables dentro de la coincidencia para usarlas de inmediato en la lógica de la rama.
%{state: some_state} = person ->
IO.puts "#{person.name} vive en #{some_state}"
end
2. Flujo lógico visual
3. Cláusulas de guarda y exhaustividad
Al utilizar la when palabra clave, puedes aumentar las coincidencias estructurales con lógica de predicado (por ejemplo, is_number(edad) y edad >= 21). Elixir requiere una coincidencia para cada entrada potencial; si ningún patrón coincide, se produce un CaseClauseError se levanta.